home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1997 March
/
CHIP Mart 1997.iso
/
SesProg
/
VDIGIT.ZIP
/
BIN2ASM.C
< prev
next >
Wrap
C/C++ Source or Header
|
1989-06-24
|
3KB
|
159 lines
/*********************************************************************/
/* */
/* Command line: */
/* BIN2ASM <source file> <dest file> */
/* */
/*********************************************************************/
#include <fcntl.h>
#include <io.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <stdio.h>
#include <stddef.h>
#include <malloc.h>
#define maxline 76
unsigned char *buffer;
int s_handle,d_handle;
char errmsg1[] = "File read error.";
char errmsg2[] = "File write error.";
char linebuffer[maxline+6] = " DB ";
char divider[] = "\r\n;--------------------------------------------------\r\n\r\n";
main(argc,argv)
int argc;
char **argv;
{
unsigned short i,fblock,byte_counter;
long s_len;
short linelength;
char sbuf[8];
if (argc != 3)
{
puts("\nCommand line:");
puts(" BIN2ASM <source file> <dest file>\n");
exit(1);
}
argv++;
s_handle = open(*argv,O_BINARY|O_RDONLY);
if (s_handle == -1)
{
puts(errmsg1);
exit(1);
}
argv++;
d_handle = open(*argv,O_BINARY|O_RDWR|O_CREAT|O_TRUNC,S_IREAD|S_IWRITE);
if (d_handle == -1)
{
close(s_handle);
puts(errmsg2);
exit(1);
}
buffer = (unsigned char *)malloc(32768);
if (buffer == NULL)
{
puts("Unable to allocate memory.");
close(s_handle);
close(d_handle);
exit(1);
}
s_len = filelength(s_handle);
byte_counter = 0;
while (s_len > 0L)
{
if (s_len >= 32768L)
fblock = 32768;
else
fblock = (unsigned short)s_len;
if (read(s_handle,buffer,fblock) != fblock)
{
close(s_handle);
close(d_handle);
free(buffer);
puts(errmsg1);
exit(1);
}
s_len -= (long)fblock;
byte_counter += fblock;
for (i=0 ; i<fblock ; i++)
{
itoa((int)buffer[i],sbuf,10);
if (strlen(linebuffer) > 4)
strcat(linebuffer,",");
strcat(linebuffer,sbuf);
if (strlen(linebuffer) >= maxline)
{
strcat(linebuffer,"\r\n");
linelength = strlen(linebuffer);
if (write(d_handle,linebuffer,linelength) != linelength)
{
close(s_handle);
close(d_handle);
free(buffer);
puts(errmsg2);
exit(1);
}
linebuffer[4] = 0;
}
}
if (byte_counter == 0)
{
if (strlen(linebuffer) > 4)
{
strcat(linebuffer,"\r\n");
linelength = strlen(linebuffer);
if (write(d_handle,linebuffer,linelength) != linelength)
{
close(s_handle);
close(d_handle);
free(buffer);
puts(errmsg2);
exit(1);
}
linebuffer[4] = 0;
}
if (write(d_handle,divider,strlen(divider)) != strlen(divider))
{
close(s_handle);
close(d_handle);
free(buffer);
puts(errmsg2);
exit(1);
}
}
}
if (strlen(linebuffer) > 4)
{
strcat(linebuffer,"\r\n");
linelength = strlen(linebuffer);
if (write(d_handle,linebuffer,linelength) != linelength)
{
close(s_handle);
close(d_handle);
free(buffer);
puts(errmsg2);
exit(1);
}
}
puts("File conversion successful.");
close(s_handle);
close(d_handle);
free(buffer);
exit(0);
}